* update CI to 5.12.8 (except appveyor)
we use the appveyor installed Qt 5.12, which is currently
5.12.6.
* update travis yaml syntax.
* update macos build system for Qt 5.12 build.
* try osx_image: xcode11.3
osx_image xcode10.3 failed 3 times in a row. It showed an
incomplete Qt install and repeated attempts to detatch.
* debug macos qt install fails
* Revert "debug macos qt install fails"
This reverts commit
36df50bc865b515b4545f5f25cc65f5e0575d325.
* Revert "try osx_image: xcode11.3"
This reverts commit
ff1e803234b31671e77d8d9ca68e74d62e753b80.
* Revert "update macos build system for Qt 5.12 build."
This reverts commit
efedf5132a84141ae351cfe308433bfbda53374b.
* cleanup new docker script.
* build docker image in clean directory.
* move macos Qt 5.12 build to xcode 10.3.
This includes a workaround for a bug in the Qt intaller
that causes segmentation faults in the Qt installer when
the minimal platform is used on macos 10.14, 10.15.
language: cpp
-matrix:
+jobs:
include:
- os: linux
dist: bionic
- sudo: required
services: docker
compiler: gcc
env:
- DOCKER_IMG="qtio"
- os: linux
dist: bionic
- sudo: required
services: docker
compiler: clang
env:
- DOCKER_IMG="qtio"
- os: linux
dist: bionic
- sudo: required
services: docker
compiler: gcc
env:
- DOCKER_IMG=""
- os: linux
dist: bionic
- sudo: required
services: docker
compiler: gcc
env:
- DOCKER_SCRIPT="./tools/build_extra_tests"
- os: linux
dist: xenial
- sudo: required
compiler: gcc
env:
- BUILD_TYPE="local"
- $HOME/Cache
timeout: 600
- os: osx
+ osx_image: xcode10.3
compiler: clang
- env: QT_VERSION="5.12.7"
+ env: QT_VERSION="5.12.8"
cache:
directories:
- $HOME/Cache
timeout: 600
- os: linux
dist: bionic
- sudo: required
compiler: gcc
env:
- BUILD_TYPE="coverage"
after_success:
- cd ${TRAVIS_BUILD_DIR}
# only deploy pushes to master or prs that target master. the prs will go to transfr.sh, the pushes go to github.
- - if [ "${TRAVIS_OS_NAME}" = "osx" ] && [ "${QT_VERSION}" = "5.12.7" ] && [ "$TRAVIS_BRANCH" = "master" ]; then bash ./tools/uploadtool/upload.sh gui/GPSBabel-*.dmg; fi
+ - if [ "${TRAVIS_OS_NAME}" = "osx" ] && [ "${QT_VERSION}" = "5.12.8" ] && [ "$TRAVIS_BRANCH" = "master" ]; then bash ./tools/uploadtool/upload.sh gui/GPSBabel-*.dmg; fi
branches:
except:
# this file is used to build the image gpsbabel_build_environment used by travis.
-FROM ubuntu:bionic as qt_install
+FROM ubuntu:bionic as qt_install_prep
WORKDIR /app
# update environment.
wget \
&& rm -rf /var/lib/apt/lists/*
+FROM qt_install_prep as qt_install
# basic build and test tools
-COPY ./qtci/install-qt-online ./qtci/extract-qt-installer ./qtci/qt-install.qs /app/
-RUN QT_CI_DOWNLOADER="wget -nv -c" PATH=/app:${PATH} ./install-qt-online "qt.qt5.5127.gcc_64,qt.qt5.5127.qtwebengine" /opt
-RUN echo "export PATH=/opt/Qt/5.12.7/gcc_64/bin:$PATH" > /opt/qt-5.12.7.env
+ARG INSTALLER
+ARG QT_CI_PACKAGES
+ARG QT_VERSION
+COPY ./extract-qt-installer ./qt-install.qs ./$INSTALLER /app/
+RUN ./extract-qt-installer $INSTALLER /opt/Qt \
+ && rm ./extract-qt-installer ./qt-install.qs ./$INSTALLER \
+ && echo "export PATH=/opt/Qt/$QT_VERSION/gcc_64/bin:$PATH" > /opt/qt-$QT_VERSION.env
FROM ubuntu:bionic
LABEL maintainer="https://github.com/tsteven4"
WORKDIR /app
+ARG QT_VERSION
# update environment.
ARG DEBIAN_FRONTEND=noninteractive
&& rm -rf /var/lib/apt/lists/*
# Qt
-COPY --from=qt_install /opt/qt-5.12.7.env /opt/qtio.env
-COPY --from=qt_install /opt/Qt/5.12.7 /opt/Qt/5.12.7
+COPY --from=qt_install /opt/qt-$QT_VERSION.env /opt/qtio.env
+COPY --from=qt_install /opt/Qt/$QT_VERSION /opt/Qt/$QT_VERSION
COPY --from=qt_install /opt/Qt/Licenses /opt/Qt/Licenses
# pkgs needed to generate coverage report:
versuffix=${1:+_$1} # tag name must be lower case
tag=$(date -u +%Y%m%dT%H%M%SZ)
-docker build --pull --file Dockerfile${versuffix} --tag gpsbabel_build_environment${versuffix}:latest .
-docker tag gpsbabel_build_environment${versuffix}:latest gpsbabel_build_environment${versuffix}:$tag
-docker tag gpsbabel_build_environment${versuffix}:latest tsteven4/gpsbabel_build_environment${versuffix}:latest
-docker tag gpsbabel_build_environment${versuffix}:latest tsteven4/gpsbabel_build_environment${versuffix}:$tag
+TMPDIR=$(mktemp -d)
+
+cp Dockerfile${versuffix} $TMPDIR
+
+docker build --pull --file Dockerfile${versuffix} \
+ --tag tsteven4/gpsbabel_build_environment${versuffix}:latest \
+ --tag tsteven4/gpsbabel_build_environment${versuffix}:$tag \
+ $TMPDIR
+/bin/rm -fr $TMPDIR
docker push tsteven4/gpsbabel_build_environment${versuffix}:$tag
docker push tsteven4/gpsbabel_build_environment${versuffix}:latest
docker image ls
--- /dev/null
+#!/bin/bash -ex
+# you must be logged into docker for the push to succeed.
+
+#versuffix=${1:+_$1} # tag name must be lower case
+versuffix=_qtio
+tag=$(date -u +%Y%m%dT%H%M%SZ)
+
+QT_VERSION=5.12.8
+QT_VERSION_SHORT=${QT_VERSION//./}
+QT_CI_PACKAGES="qt.qt5.${QT_VERSION_SHORT}.gcc_64,qt.qt5.${QT_VERSION_SHORT}.qtwebengine"
+DOWNLOAD_URL=$(./qtci/find_qt_installer ${QT_VERSION})
+INSTALLER=$(basename $DOWNLOAD_URL)
+TMPDIR=$(mktemp -d)
+
+cp Dockerfile${versuffix} $TMPDIR
+cp ./qtci/extract-qt-installer ./qtci/qt-install.qs $TMPDIR
+wget -nv -c -N -P $TMPDIR ${DOWNLOAD_URL}
+
+docker build --pull --file Dockerfile${versuffix} \
+ --target qt_install_prep \
+ $TMPDIR
+docker build --pull --file Dockerfile${versuffix} \
+ --network none \
+ --build-arg INSTALLER=${INSTALLER} \
+ --build-arg QT_CI_PACKAGES=${QT_CI_PACKAGES} \
+ --build-arg QT_VERSION=${QT_VERSION} \
+ --target qt_install \
+ $TMPDIR
+docker build --pull --file Dockerfile${versuffix} \
+ --build-arg INSTALLER=${INSTALLER} \
+ --build-arg QT_CI_PACKAGES=${QT_CI_PACKAGES} \
+ --build-arg QT_VERSION=${QT_VERSION} \
+ --tag tsteven4/gpsbabel_build_environment${versuffix}:latest \
+ --tag tsteven4/gpsbabel_build_environment${versuffix}:$tag \
+ $TMPDIR
+/bin/rm -fr $TMPDIR
+docker push tsteven4/gpsbabel_build_environment${versuffix}:$tag
+docker push tsteven4/gpsbabel_build_environment${versuffix}:latest
+docker image ls
unset DISPLAY
+# platform minimal doesn't work on macos 10.14, 10.15. It did work on 10.13.
+# https://bugreports.qt.io/browse/QTIFW-1471
+PLATFORM="--platform minimal"
+if [ "$(uname)" = "Darwin" ]; then
+ vn=$(sw_vers -productVersion | cut -d. -f2,2)
+ if [ $vn -ge 14 ]; then
+ unset PLATFORM
+ fi
+fi
+
if [ -n "$DISABLE_PROGRESS_REPORT" ]
then
- QT_QPA_PLATFORM=minimal $INSTALLER --script $SCRIPT QTCI_LIST_PACKAGES="$LIST_PACKAGES" QTCI_PACKAGES="$PACKAGES" QTCI_OUTPUT="$OUTPUT"
+ $INSTALLER $PLATFORM --script $SCRIPT QTCI_LIST_PACKAGES="$LIST_PACKAGES" QTCI_PACKAGES="$PACKAGES" QTCI_OUTPUT="$OUTPUT"
else
- ARGS="-v"
-
if [ -n "$VERBOSE" ]
then
- QT_QPA_PLATFORM=minimal $INSTALLER $ARGS --script $SCRIPT QTCI_LIST_PACKAGES="$LIST_PACKAGES" QTCI_PACKAGES="$PACKAGES" QTCI_OUTPUT="$OUTPUT"
+ $INSTALLER --verbose $PLATFORM --script $SCRIPT QTCI_LIST_PACKAGES="$LIST_PACKAGES" QTCI_PACKAGES="$PACKAGES" QTCI_OUTPUT="$OUTPUT"
else
- QT_QPA_PLATFORM=minimal $INSTALLER $ARGS --script $SCRIPT QTCI_LIST_PACKAGES="$LIST_PACKAGES" QTCI_PACKAGES="$PACKAGES" QTCI_OUTPUT="$OUTPUT" | grep "\(QTCI\|operation\)"
+ $INSTALLER --verbose $PLATFORM --script $SCRIPT QTCI_LIST_PACKAGES="$LIST_PACKAGES" QTCI_PACKAGES="$PACKAGES" QTCI_OUTPUT="$OUTPUT" | grep "\(QTCI\|operation\)"
fi
fi
--- /dev/null
+#!/bin/bash -e
+# Reference:
+# https://github.com/musescore/MuseScore/blob/master/build/travis/job_macos/install.sh
+
+QT_VERSION=${1:-5.12.0}
+
+QT_MAJOR_VERSION=$(echo ${QT_VERSION} | cut -d "." -f 1)
+QT_MINOR_VERSION=$(echo ${QT_VERSION} | cut -d "." -f 2)
+if [ "$(uname)" = "Darwin" ]; then
+ if { [ "${QT_MAJOR_VERSION}" -eq 5 ] && [ "${QT_MINOR_VERSION}" -ge 9 ]; } || [ "${QT_MAJOR_VERSION}" -ge 6 ]; then
+ # this was good from 5.9.0 through at least 5.12.0
+ DOWNLOAD_URL=https://download.qt.io/archive/qt/${QT_MAJOR_VERSION}.${QT_MINOR_VERSION}/${QT_VERSION}/qt-opensource-mac-x64-${QT_VERSION}.dmg
+ else
+ # this was good from 5.2.1 through 5.8.0
+ DOWNLOAD_URL=https://download.qt.io/archive/qt/${QT_MAJOR_VERSION}.${QT_MINOR_VERSION}/${QT_VERSION}/qt-opensource-mac-x64-clang-${QT_VERSION}.dmg
+ fi
+elif [ "$(uname)" = "Linux" ]; then
+ # this was good from 5.2.1 through at least 5.12.0
+ DOWNLOAD_URL=https://download.qt.io/archive/qt/${QT_MAJOR_VERSION}.${QT_MINOR_VERSION}/${QT_VERSION}/qt-opensource-linux-x64-${QT_VERSION}.run
+else
+ echo "Unsupported system." >&2
+ exit 1
+fi
+echo $DOWNLOAD_URL